<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        //for...of 案例
        //**案例 1：过滤数组中的奇数并输
        // const numbers=[1,2,3,4,5,6,7,8,9,10]
        // for(const num of numbers){
        //     if(num%2!==0){
        //         console.log(num);

        //     }
        // }
        //**案例 2：查找并输出字符串数组中包含特定子字符串的元素**
        // const phrases = ['hello world', 'javascript is fun', 'openai gpt', 'coding is great'];
        // for (const phrase of phrases) {
        //     if (phrase.includes('is')) {
        //         console.log(phrase);
        //     }
        // }
        //**案例 3：计算并输出包含负数的数组的正数总和**
        // const mixedNumbers=[-3,5,-1,8,-2,7];
        // let sum=0
        // for(const num of mixedNumbers){
        //     if(num>0){
        //         sum+=num
        //     }
        // }
        // console.log(`Total sum of positive numbers:${sum}`);
        //for...in 案例
        // **案例 1：遍历对象属性并输出符合条件的属性值**
        // const person={
        //     name:'Alice',
        //     age:25,
        //     city:'wonder;and',
        //     occupation:'engineer'
        // }
        // for(const key in person){
        //     if(typeof person[key]==='string'){
        //         console.log(person[key]);
        //     }
        // }
        //**案例 2：计算对象中数值属性的总和**
        // const data={
        //     a:10,
        //     b:20,
        //     c:'thifty',
        //     d:40,
        //     e:'fifty'
        // }
        // let sum=0
        // for(const key in data){
        //     if(typeof data[key]==='number'){
        //         sum+=data[key]
        //     }
        // }
        // console.log(`Total sum of numeric values:${sum}`);
        //案例 3：查找对象中符合条件的属性并输出键和值
        // const inventory={
        //     apples:5,
        //     oranges:0,
        //     bananas:8,
        //     grapes:2,
        //     cherries:0
        // }
        // for(const key in inventory){
        //     if(inventory[key]===0){
        //         console.log(`${key}:${inventory[key]}`);
        //     }
        // }
        //forEach 案例
        //**案例 1：查找并输出数组中的正数并计算它们的平均值**
        // const numbers=[-3,5,-1,8,-2,7]
        // let sum=0
        // let count=0
        // numbers.forEach(num=>{
        //     if(num>0){
        //         sum+=num

        //         count++
        //     }
        // })
        // const average=sum/count;
        // console.log(`Average of positive numbers:${average}`);
        //**案例 2：查找数组中的字符串长度并输出超过特定长度的字符串*
        // const words = ['apple','banana','cherry','date' ,'fig','grape']
        // const minLength=5
        // words.forEach(word=>{
        //     if(word.length>minLength){
        //         console.log(word)
        //     }
        // })
        //map 案例
        //**案例 1：将数组中的负数转换为正数**
        // const numbers = [-3, 5, -1, 8, -2, 7];
        // const positiveNumbers=numbers.map(num=>{
        //     return num<0?-num:num
        // })
        // console.log(positiveNumbers);
        //**案例 2：将对象数组中的特定属性值大写化**
        //     const people=[
        //   { name:'Alice',age:25},
        //   { name:'Bob',age:30},
        //   {name:'charlie',age:35}
        //     ]
        //     const uppercasedNames=people.map(person=>{
        //         return person.name.length>3?{...person,name:person.name.toUpperCase()}:person
        //     })
        //     console.log(uppercasedNames);
        //**案例 3：将字符串数组中的特定子字符串替换为另一字符串*
        // const phrases = ['hello world', 'javascript is fun', 'hello openai', 'coding is great'];
        // const updatedphrases = phrases.map(phrase => {
        //     return phrase.includes('hello') ? phrase.replace('hello', 'hi') : phrase
        // })
        // console.log(updatedphrases);
        //使用 map、filter 和 reduce 方法结合的案例
        //**案例 1：计算并输出长度大于 5 的字符串的总长度
        // const phrases = ['hello world', 'javascript', 'openai', 'coding is fun'];
        // const totalLength = phrases
        //     .filter(phrase => phrase.length > 5) // 过滤长度大于5的字符串
        //     .map(phrase => phrase.length)        // 将每个字符串转换为其长度
        //     .reduce((sum, length) => sum + length, 0); // 计算总长度
        // console.log(`Total length of strings longer than 5 characters: ${totalLength}`);
        //案例 2：计算正数数组的平方和，并排除负数
        // const numbers = [-5, 3, -2, 4, 6, -1];
        // const squaresum=numbers
        // .filter(num=>num>0)
        // .map(num=>num*num)
        // .reduce((sum,squared)=>sum+squared,0)
        // console.log(squaresum);
        // **案例 3：处理用户数据，提取年龄大于 18 的用户，并计算他们的平均年龄**
        // const users=[
        //     {name:'Alice',age:22},
        //     {naem:'Bob',age:17},
        //     {name:'Charlie',age:30},
        //     {name:'David',age:15}
        // ]
        // const averageAge=users
        // .filter(user=>user.age>18)
        // .map(user=>user.age)
        // .reduce((sum,age,_,array)=>sum+age/array.length,0)
        // console.log(averageAge);
        //使用 findIndex、splice 方法结合案例
        //**案例 1：在购物车中移除指定商品**
        //         const cart = [
        //             { id: 1, name: 'Laptop', quantity: 1 },
        //             { id: 2, name: 'Mouse', quantity: 2 },
        //             { id: 3, name: 'Keyboard', quantity: 1 }
        //         ];
        //         const itemIdToRemove=2
        //         const indexToRemove=cart.findIndex(item=>item.id===itemIdToRemove)
        //         if(indexToRemove!==-1){
        //             cart.splice(indexToRemove,1)
        //         }
        // console.log(cart);
        //**案例 2：更新数组中的指定对象属性*
        // const employees = [
        //   { id: 1, name: 'John', role: 'Developer' },
        //   { id: 2, name: 'Jane', role: 'Designer' },
        //   { id: 3, name: 'Tom', role: 'Manager' }
        // ];
        // const employeesIdToUpdate=3
        // const newRole='semior Manager'
        // const indexToUpdate=employees.findIndex(employee=>employee.id===employeesIdToUpdate)
        //  if(indexToUpdate !==-1){
        //     employees[indexToUpdate].role=newRole
        //  }
        //  console.log(employees);
        //*案例 3：将数组中的第一个负数替换为
        // const numbers = [4, -1, 6, -2, 7]
        // const indexToReplace = numbers.findIndex(num => num < 0)
        // if (indexToReplace !== -1) {
        //     numbers.splice(indexToReplace, 1, 0)
        // }
        // console.log(numbers);
        //## 扩展:slice()
// const numbers=[1,2,3,4,5]
// const sliced=numbers.slice(1,4)
// console.log(sliced);



    </script>
</body>

</html>